package cn.tedu.bigdecimal;

import java.math.BigDecimal;
import java.util.Scanner;

/*本类用于解决浮点数运算不精确的问题*/
public class TestBigDecimal {
    public static void main(String[] args) {
        //  f1();
        f2();
    }


    private static void f1() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个小数");
        double v = scanner.nextDouble();
        System.out.println("请输入第二个小数");
        double v1 = scanner.nextDouble();
        System.out.println(v + "+" + v1 + "=" + (v + v1));
        System.out.println(v + "-" + v1 + "=" + (v - v1));
        System.out.println(v + "*" + v1 + "=" + (v * v1));
        System.out.println(v + "/" + v1 + "=" + (v / v1));
    }

    private static void f2() {
        /*WarIng 不要使用Double类型的构造方法
        * 因为还是不精确的，要使用String类型的构造方法
        * double转为String直接拼个空串就行*/
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个小数");
        double v = scanner.nextDouble();
        System.out.println("请输入第二个小数");
        double v1 = scanner.nextDouble();
        BigDecimal bigDecimal = new BigDecimal(v+"");
        BigDecimal bigDecimal1 = new BigDecimal(v1+"");
        BigDecimal bd;
        //加
        bd = bigDecimal.add(bigDecimal1);
        System.out.println(bd);
        //减
        System.out.println(bigDecimal.subtract(bigDecimal1));
        //乘
        System.out.println(bigDecimal.multiply(bigDecimal1) );
        //除
        /*有与除法会出现除不尽的现象，数据仍没有办法精确展示
        * 所以我们需要提前设置保留位数与取舍规则*/
        System.out.println(bigDecimal.divide(bigDecimal1,3,BigDecimal.ROUND_HALF_DOWN));
    }
}
